package com.baiduspring.dubbo.service.mybatis.mapper;

import com.baiduspring.domain.User;
import com.baiduspring.dubbo.service.mybatis.mapper.params.UserParam;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

/**
 * user数据库操作接口
 * @author xiongyan
 */
public interface UserMapper {
    /**
     * 根据主见删除用户
     * @param id 主键id
     * @return 删除行数
     */
    int deleteByPrimaryKey(Long id);

    /**
     * 添加数据
     * @param record 参数
     * @return 添加条数
     */
    int insert(User record);

    /**
     * 添加数据，只保存不为空的字段值
     * @param record 参数
     * @return 添加条数
     */
    int insertSelective(User record);

    /**
     * 根据id查询数据
     * @param id 主键ID
     * @return 结果对象
     */
    User selectByPrimaryKey(Long id);

    /**
     * 更新参数中不为空的字段值
     * @param record 参数
     * @return 更新行数
     */
    int updateByPrimaryKeySelective(User record);

    /**
     * 更新数据
     * @param record 参数
     * @return 更新行数
     */
    int updateByPrimaryKey(User record);

    /**
     * 根据参数查询满足条件的数据条数
     * @param record 参数
     * @return 总条数
     */
    Integer uniqueness(User record);

    User selectByNameAndPassword(@Param("name") String name, @Param("password") String password);

    User selectByName(@Param("name") String name);

    User selectByAccount(@Param("account") Long account);

    int updateHomepageViewsByAccount(@Param("account") Long account);

    /**
     * 根据手机号码修改密码
     *
     * @param mobile      手机号码
     * @param newPassword 新密码
     * @return 更新的行数
     */
    int updatePasswordByMobile(@Param("mobile") String mobile, @Param("newPassword") String newPassword);
}